package eo.descriptor.entity;

import java.io.Serializable;
import java.util.Collection;

import eo.descriptor.property.PropertyDescriptor;

/**
 * Describes an Entity.
 * 
 * @author takeshi
 * 
 */
public interface EntityDescriptor {
    String getEntityName();

    EntityDescriptor getSuperClassDescriptor();

    Collection<? extends EntityDescriptor> getSubclasses();

    Collection<? extends PropertyDescriptor> getProperties();

    Serializable getId(Object entity);

    Class<?> getEntityClass();

    Object createInstance();

    PropertyDescriptor getProperty(String string);
}
